{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "ad1c63a1-f43b-476d-9303-aa699646b804",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "✅ Elasticsearch连接成功!\n",
      "集群名称: docker-cluster\n",
      "版本: 8.18.2\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# IK中文分词器演示\n",
    "# 使用Elasticsearch的IK分词器进行中文文本分析\n",
    "\n",
    "import requests\n",
    "import json\n",
    "\n",
    "# Elasticsearch连接配置\n",
    "es_host = \"http://host.docker.internal:9200\"\n",
    "\n",
    "# 测试连接\n",
    "def test_connection():\n",
    "    try:\n",
    "        response = requests.get(es_host)\n",
    "        if response.status_code == 200:\n",
    "            cluster_info = response.json()\n",
    "            print(\"✅ Elasticsearch连接成功!\")\n",
    "            print(f\"集群名称: {cluster_info['cluster_name']}\")\n",
    "            print(f\"版本: {cluster_info['version']['number']}\")\n",
    "            return True\n",
    "        else:\n",
    "            print(\"❌ Elasticsearch连接失败!\")\n",
    "            return False\n",
    "    except Exception as e:\n",
    "        print(f\"❌ 连接错误: {e}\")\n",
    "        return False\n",
    "\n",
    "# 测试连接\n",
    "test_connection()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "ffcf3604",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "============================================================\n",
      "IK中文分词器演示\n",
      "============================================================\n",
      "\n",
      "原文: 中华人民共和国国歌\n",
      "----------------------------------------\n",
      "ik_smart分词: 中华人民共和国 | 国歌\n",
      "ik_max_word分词: 中华人民共和国 | 中华人民 | 中华 | 华人 | 人民共和国 | 人民 | 共和国 | 共和 | 国 | 国歌\n",
      "智能分词数量: 2, 最大分词数量: 10\n",
      "\n",
      "原文: 北京大学是中国的顶尖学府\n",
      "----------------------------------------\n",
      "ik_smart分词: 北京大学 | 是 | 中国 | 的 | 顶尖 | 学府\n",
      "ik_max_word分词: 北京大学 | 北京大 | 北京 | 大学 | 是 | 中国 | 的 | 顶尖 | 学府\n",
      "智能分词数量: 6, 最大分词数量: 9\n",
      "\n",
      "原文: 人工智能技术正在改变世界\n",
      "----------------------------------------\n",
      "ik_smart分词: 人工智能技术 | 正在 | 改变 | 世界\n",
      "ik_max_word分词: 人工智能技术 | 人工智能 | 人工 | 智能 | 技术 | 正在 | 改变 | 世界\n",
      "智能分词数量: 4, 最大分词数量: 8\n",
      "\n",
      "原文: 阿里巴巴集团控股有限公司\n",
      "----------------------------------------\n",
      "ik_smart分词: 阿里巴巴 | 集团 | 控股 | 有限公司\n",
      "ik_max_word分词: 阿里巴巴 | 阿里 | 巴巴 | 集团 | 控股 | 有限公司 | 有限 | 公司\n",
      "智能分词数量: 4, 最大分词数量: 8\n",
      "\n",
      "原文: 自然语言处理是机器学习的重要分支\n",
      "----------------------------------------\n",
      "ik_smart分词: 自然语言 | 处理 | 是 | 机器 | 学习 | 的 | 重要 | 分支\n",
      "ik_max_word分词: 自然语言 | 自然 | 语言 | 处理 | 是 | 机器 | 学习 | 的 | 重要 | 分支\n",
      "智能分词数量: 8, 最大分词数量: 10\n"
     ]
    }
   ],
   "source": [
    "# IK分词器功能演示\n",
    "# IK分词器有两种模式：\n",
    "# 1. ik_smart: 智能分词，粗粒度\n",
    "# 2. ik_max_word: 最大化分词，细粒度\n",
    "\n",
    "def analyze_text(text, analyzer=\"ik_smart\"):\n",
    "    \"\"\"\n",
    "    使用指定的分析器分析文本\n",
    "    \"\"\"\n",
    "    url = f\"{es_host}/_analyze\"\n",
    "    data = {\n",
    "        \"analyzer\": analyzer,\n",
    "        \"text\": text\n",
    "    }\n",
    "    \n",
    "    try:\n",
    "        response = requests.post(url, json=data, headers={'Content-Type': 'application/json'})\n",
    "        if response.status_code == 200:\n",
    "            result = response.json()\n",
    "            tokens = [token['token'] for token in result['tokens']]\n",
    "            return tokens\n",
    "        else:\n",
    "            print(f\"❌ 分析失败: {response.status_code}\")\n",
    "            return []\n",
    "    except Exception as e:\n",
    "        print(f\"❌ 错误: {e}\")\n",
    "        return []\n",
    "\n",
    "# 测试文本\n",
    "test_texts = [\n",
    "    \"中华人民共和国国歌\",\n",
    "    \"北京大学是中国的顶尖学府\",\n",
    "    \"人工智能技术正在改变世界\",\n",
    "    \"阿里巴巴集团控股有限公司\",\n",
    "    \"自然语言处理是机器学习的重要分支\"\n",
    "]\n",
    "\n",
    "print(\"=\" * 60)\n",
    "print(\"IK中文分词器演示\")\n",
    "print(\"=\" * 60)\n",
    "\n",
    "for text in test_texts:\n",
    "    print(f\"\\n原文: {text}\")\n",
    "    print(\"-\" * 40)\n",
    "    \n",
    "    # ik_smart分词\n",
    "    smart_tokens = analyze_text(text, \"ik_smart\")\n",
    "    print(f\"ik_smart分词: {' | '.join(smart_tokens)}\")\n",
    "    \n",
    "    # ik_max_word分词\n",
    "    max_tokens = analyze_text(text, \"ik_max_word\")\n",
    "    print(f\"ik_max_word分词: {' | '.join(max_tokens)}\")\n",
    "    \n",
    "    print(f\"智能分词数量: {len(smart_tokens)}, 最大分词数量: {len(max_tokens)}\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "047fdd5d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "==================================================\n",
      "创建IK分词索引并插入中文文档\n",
      "==================================================\n",
      "✅ 索引 'chinese_articles' 创建成功!\n",
      "✅ 成功插入 4/4 个文档\n"
     ]
    }
   ],
   "source": [
    "# 创建使用IK分词器的索引并进行搜索演示\n",
    "\n",
    "def create_chinese_index():\n",
    "    \"\"\"\n",
    "    创建一个使用IK分词器的索引\n",
    "    \"\"\"\n",
    "    index_name = \"chinese_articles\"\n",
    "    \n",
    "    # 删除已存在的索引\n",
    "    requests.delete(f\"{es_host}/{index_name}\")\n",
    "    \n",
    "    # 索引配置，指定使用IK分词器\n",
    "    index_config = {\n",
    "        \"settings\": {\n",
    "            \"analysis\": {\n",
    "                \"analyzer\": {\n",
    "                    \"ik_analyzer\": {\n",
    "                        \"type\": \"ik_max_word\"\n",
    "                    }\n",
    "                }\n",
    "            }\n",
    "        },\n",
    "        \"mappings\": {\n",
    "            \"properties\": {\n",
    "                \"title\": {\n",
    "                    \"type\": \"text\",\n",
    "                    \"analyzer\": \"ik_max_word\",\n",
    "                    \"search_analyzer\": \"ik_smart\"\n",
    "                },\n",
    "                \"content\": {\n",
    "                    \"type\": \"text\",\n",
    "                    \"analyzer\": \"ik_max_word\",\n",
    "                    \"search_analyzer\": \"ik_smart\"\n",
    "                },\n",
    "                \"author\": {\n",
    "                    \"type\": \"keyword\"\n",
    "                }\n",
    "            }\n",
    "        }\n",
    "    }\n",
    "    \n",
    "    try:\n",
    "        response = requests.put(\n",
    "            f\"{es_host}/{index_name}\",\n",
    "            json=index_config,\n",
    "            headers={'Content-Type': 'application/json'}\n",
    "        )\n",
    "        \n",
    "        if response.status_code in [200, 201]:\n",
    "            print(f\"✅ 索引 '{index_name}' 创建成功!\")\n",
    "            return True\n",
    "        else:\n",
    "            print(f\"❌ 索引创建失败: {response.status_code}\")\n",
    "            print(response.text)\n",
    "            return False\n",
    "    except Exception as e:\n",
    "        print(f\"❌ 错误: {e}\")\n",
    "        return False\n",
    "\n",
    "def insert_sample_documents():\n",
    "    \"\"\"\n",
    "    插入示例中文文档\n",
    "    \"\"\"\n",
    "    index_name = \"chinese_articles\"\n",
    "    \n",
    "    documents = [\n",
    "        {\n",
    "            \"title\": \"人工智能的发展历程\",\n",
    "            \"content\": \"人工智能是计算机科学的一个分支，它企图了解智能的实质，并生产出一种新的能以人类智能相似的方式做出反应的智能机器。\",\n",
    "            \"author\": \"张三\"\n",
    "        },\n",
    "        {\n",
    "            \"title\": \"机器学习算法详解\",\n",
    "            \"content\": \"机器学习是人工智能的一个重要分支，通过算法和统计模型使计算机能够有效地执行特定任务而无需明确的指令。\",\n",
    "            \"author\": \"李四\"\n",
    "        },\n",
    "        {\n",
    "            \"title\": \"自然语言处理技术应用\",\n",
    "            \"content\": \"自然语言处理是计算机科学领域与人工智能领域中的一个重要方向，研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。\",\n",
    "            \"author\": \"王五\"\n",
    "        },\n",
    "        {\n",
    "            \"title\": \"深度学习神经网络\",\n",
    "            \"content\": \"深度学习是机器学习的分支，是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。\",\n",
    "            \"author\": \"赵六\"\n",
    "        }\n",
    "    ]\n",
    "    \n",
    "    success_count = 0\n",
    "    for i, doc in enumerate(documents, 1):\n",
    "        try:\n",
    "            response = requests.post(\n",
    "                f\"{es_host}/{index_name}/_doc/{i}\",\n",
    "                json=doc,\n",
    "                headers={'Content-Type': 'application/json'}\n",
    "            )\n",
    "            \n",
    "            if response.status_code in [200, 201]:\n",
    "                success_count += 1\n",
    "            else:\n",
    "                print(f\"❌ 文档 {i} 插入失败: {response.status_code}\")\n",
    "        except Exception as e:\n",
    "            print(f\"❌ 文档 {i} 插入错误: {e}\")\n",
    "    \n",
    "    print(f\"✅ 成功插入 {success_count}/{len(documents)} 个文档\")\n",
    "    \n",
    "    # 刷新索引以确保文档可搜索\n",
    "    requests.post(f\"{es_host}/{index_name}/_refresh\")\n",
    "\n",
    "# 执行创建索引和插入数据\n",
    "print(\"\\n\" + \"=\" * 50)\n",
    "print(\"创建IK分词索引并插入中文文档\")\n",
    "print(\"=\" * 50)\n",
    "\n",
    "if create_chinese_index():\n",
    "    insert_sample_documents()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "834934b0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "============================================================\n",
      "IK中文分词搜索演示\n",
      "============================================================\n",
      "\n",
      "🔍 搜索词: '人工智能'\n",
      "📊 找到 3 个相关文档\n",
      "------------------------------------------------------------\n",
      "\n",
      "📄 文档 1 (相关度: 1.14)\n",
      "标题: 人工智能的发展历程\n",
      "作者: 张三\n",
      "内容: 人工智能是计算机科学的一个分支，它企图了解智能的实质，并生产出一种新的能以人类智能相似的方式做出反应的智能机器。...\n",
      "🔆 高亮匹配:\n",
      "  title: <mark>人工智能</mark>的发展历程\n",
      "  content: <mark>人工智能</mark>是计算机科学的一个分支，它企图了解智能的实质，并生产出一种新的能以人类智能相似的方式做出反应的智能机器。\n",
      "\n",
      "📄 文档 2 (相关度: 0.37)\n",
      "标题: 机器学习算法详解\n",
      "作者: 李四\n",
      "内容: 机器学习是人工智能的一个重要分支，通过算法和统计模型使计算机能够有效地执行特定任务而无需明确的指令。...\n",
      "🔆 高亮匹配:\n",
      "  content: 机器学习是<mark>人工智能</mark>的一个重要分支，通过算法和统计模型使计算机能够有效地执行特定任务而无需明确的指令。\n",
      "\n",
      "📄 文档 3 (相关度: 0.34)\n",
      "标题: 自然语言处理技术应用\n",
      "作者: 王五\n",
      "内容: 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向，研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。...\n",
      "🔆 高亮匹配:\n",
      "  content: 自然语言处理是计算机科学领域与<mark>人工智能</mark>领域中的一个重要方向，研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。\n",
      "\n",
      "============================================================\n",
      "\n",
      "🔍 搜索词: '机器学习算法'\n",
      "📊 找到 3 个相关文档\n",
      "------------------------------------------------------------\n",
      "\n",
      "📄 文档 1 (相关度: 3.44)\n",
      "标题: 机器学习算法详解\n",
      "作者: 李四\n",
      "内容: 机器学习是人工智能的一个重要分支，通过算法和统计模型使计算机能够有效地执行特定任务而无需明确的指令。...\n",
      "🔆 高亮匹配:\n",
      "  title: <mark>机器</mark><mark>学习</mark><mark>算法</mark>详解\n",
      "  content: <mark>机器</mark><mark>学习</mark>是人工智能的一个重要分支，通过<mark>算法</mark>和统计模型使计算机能够有效地执行特定任务而无需明确的指令。\n",
      "\n",
      "📄 文档 2 (相关度: 2.05)\n",
      "标题: 深度学习神经网络\n",
      "作者: 赵六\n",
      "内容: 深度学习是机器学习的分支，是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。...\n",
      "🔆 高亮匹配:\n",
      "  title: 深度<mark>学习</mark>神经网络\n",
      "  content: 深度<mark>学习</mark>是<mark>机器</mark><mark>学习</mark>的分支，是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的<mark>算法</mark>。\n",
      "\n",
      "📄 文档 3 (相关度: 0.35)\n",
      "标题: 人工智能的发展历程\n",
      "作者: 张三\n",
      "内容: 人工智能是计算机科学的一个分支，它企图了解智能的实质，并生产出一种新的能以人类智能相似的方式做出反应的智能机器。...\n",
      "🔆 高亮匹配:\n",
      "  content: 人工智能是计算机科学的一个分支，它企图了解智能的实质，并生产出一种新的能以人类智能相似的方式做出反应的智能<mark>机器</mark>。\n",
      "\n",
      "============================================================\n",
      "\n",
      "🔍 搜索词: '自然语言'\n",
      "📊 找到 1 个相关文档\n",
      "------------------------------------------------------------\n",
      "\n",
      "📄 文档 1 (相关度: 1.60)\n",
      "标题: 自然语言处理技术应用\n",
      "作者: 王五\n",
      "内容: 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向，研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。...\n",
      "🔆 高亮匹配:\n",
      "  title: <mark>自然语言</mark>处理技术应用\n",
      "  content: <mark>自然语言</mark>处理是计算机科学领域与人工智能领域中的一个重要方向，研究能实现人与计算机之间用<mark>自然语言</mark>进行有效通信的各种理论和方法。\n",
      "\n",
      "============================================================\n",
      "\n",
      "🔍 搜索词: '深度学习'\n",
      "📊 找到 2 个相关文档\n",
      "------------------------------------------------------------\n",
      "\n",
      "📄 文档 1 (相关度: 2.21)\n",
      "标题: 深度学习神经网络\n",
      "作者: 赵六\n",
      "内容: 深度学习是机器学习的分支，是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。...\n",
      "🔆 高亮匹配:\n",
      "  title: <mark>深度</mark><mark>学习</mark>神经网络\n",
      "  content: <mark>深度</mark><mark>学习</mark>是机器<mark>学习</mark>的分支，是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。\n",
      "\n",
      "📄 文档 2 (相关度: 0.77)\n",
      "标题: 机器学习算法详解\n",
      "作者: 李四\n",
      "内容: 机器学习是人工智能的一个重要分支，通过算法和统计模型使计算机能够有效地执行特定任务而无需明确的指令。...\n",
      "🔆 高亮匹配:\n",
      "  title: 机器<mark>学习</mark>算法详解\n",
      "  content: 机器<mark>学习</mark>是人工智能的一个重要分支，通过算法和统计模型使计算机能够有效地执行特定任务而无需明确的指令。\n",
      "\n",
      "============================================================\n",
      "\n",
      "🔍 搜索词: '智能机器'\n",
      "📊 找到 4 个相关文档\n",
      "------------------------------------------------------------\n",
      "\n",
      "📄 文档 1 (相关度: 1.33)\n",
      "标题: 机器学习算法详解\n",
      "作者: 李四\n",
      "内容: 机器学习是人工智能的一个重要分支，通过算法和统计模型使计算机能够有效地执行特定任务而无需明确的指令。...\n",
      "🔆 高亮匹配:\n",
      "  title: <mark>机器</mark>学习算法详解\n",
      "  content: <mark>机器</mark>学习是人工<mark>智能</mark>的一个重要分支，通过算法和统计模型使计算机能够有效地执行特定任务而无需明确的指令。\n",
      "\n",
      "📄 文档 2 (相关度: 1.14)\n",
      "标题: 人工智能的发展历程\n",
      "作者: 张三\n",
      "内容: 人工智能是计算机科学的一个分支，它企图了解智能的实质，并生产出一种新的能以人类智能相似的方式做出反应的智能机器。...\n",
      "🔆 高亮匹配:\n",
      "  title: 人工<mark>智能</mark>的发展历程\n",
      "  content: 人工<mark>智能</mark>是计算机科学的一个分支，它企图了解<mark>智能</mark>的实质，并生产出一种新的能以人类<mark>智能</mark>相似的方式做出反应的<mark>智能</mark><mark>机器</mark>。\n",
      "\n",
      "📄 文档 3 (相关度: 0.37)\n",
      "标题: 深度学习神经网络\n",
      "作者: 赵六\n",
      "内容: 深度学习是机器学习的分支，是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。...\n",
      "🔆 高亮匹配:\n",
      "  content: 深度学习是<mark>机器</mark>学习的分支，是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。\n",
      "\n",
      "📄 文档 4 (相关度: 0.34)\n",
      "标题: 自然语言处理技术应用\n",
      "作者: 王五\n",
      "内容: 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向，研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。...\n",
      "🔆 高亮匹配:\n",
      "  content: 自然语言处理是计算机科学领域与人工<mark>智能</mark>领域中的一个重要方向，研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。\n",
      "\n",
      "============================================================\n",
      "\n",
      "🔍 搜索词: '计算机科学'\n",
      "📊 找到 3 个相关文档\n",
      "------------------------------------------------------------\n",
      "\n",
      "📄 文档 1 (相关度: 1.14)\n",
      "标题: 自然语言处理技术应用\n",
      "作者: 王五\n",
      "内容: 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向，研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。...\n",
      "🔆 高亮匹配:\n",
      "  content: 自然语言处理是<mark>计算机</mark><mark>科学</mark>领域与人工智能领域中的一个重要方向，研究能实现人与<mark>计算机</mark>之间用自然语言进行有效通信的各种理论和方法。\n",
      "\n",
      "📄 文档 2 (相关度: 1.04)\n",
      "标题: 人工智能的发展历程\n",
      "作者: 张三\n",
      "内容: 人工智能是计算机科学的一个分支，它企图了解智能的实质，并生产出一种新的能以人类智能相似的方式做出反应的智能机器。...\n",
      "🔆 高亮匹配:\n",
      "  content: 人工智能是<mark>计算机</mark><mark>科学</mark>的一个分支，它企图了解智能的实质，并生产出一种新的能以人类智能相似的方式做出反应的智能机器。\n",
      "\n",
      "📄 文档 3 (相关度: 0.37)\n",
      "标题: 机器学习算法详解\n",
      "作者: 李四\n",
      "内容: 机器学习是人工智能的一个重要分支，通过算法和统计模型使计算机能够有效地执行特定任务而无需明确的指令。...\n",
      "🔆 高亮匹配:\n",
      "  content: 机器学习是人工智能的一个重要分支，通过算法和统计模型使<mark>计算机</mark>能够有效地执行特定任务而无需明确的指令。\n",
      "\n",
      "============================================================\n",
      "\n",
      "🎉 IK中文分词器演示完成!\n",
      "✨ 特点总结:\n",
      "• ik_smart: 智能分词，适合搜索场景\n",
      "• ik_max_word: 最大化分词，适合索引场景\n",
      "• 支持中文词汇的语义理解\n",
      "• 可以识别专业术语和复合词\n"
     ]
    }
   ],
   "source": [
    "# 中文搜索演示\n",
    "\n",
    "def search_chinese_articles(query, fields=[\"title\", \"content\"]):\n",
    "    \"\"\"\n",
    "    搜索中文文档\n",
    "    \"\"\"\n",
    "    index_name = \"chinese_articles\"\n",
    "    \n",
    "    search_query = {\n",
    "        \"query\": {\n",
    "            \"multi_match\": {\n",
    "                \"query\": query,\n",
    "                \"fields\": fields,\n",
    "                \"type\": \"best_fields\",\n",
    "                \"operator\": \"or\"\n",
    "            }\n",
    "        },\n",
    "        \"highlight\": {\n",
    "            \"fields\": {\n",
    "                \"title\": {},\n",
    "                \"content\": {}\n",
    "            },\n",
    "            \"pre_tags\": [\"<mark>\"],\n",
    "            \"post_tags\": [\"</mark>\"]\n",
    "        }\n",
    "    }\n",
    "    \n",
    "    try:\n",
    "        response = requests.post(\n",
    "            f\"{es_host}/{index_name}/_search\",\n",
    "            json=search_query,\n",
    "            headers={'Content-Type': 'application/json'}\n",
    "        )\n",
    "        \n",
    "        if response.status_code == 200:\n",
    "            result = response.json()\n",
    "            return result\n",
    "        else:\n",
    "            print(f\"❌ 搜索失败: {response.status_code}\")\n",
    "            return None\n",
    "    except Exception as e:\n",
    "        print(f\"❌ 搜索错误: {e}\")\n",
    "        return None\n",
    "\n",
    "def display_search_results(query, results):\n",
    "    \"\"\"\n",
    "    显示搜索结果\n",
    "    \"\"\"\n",
    "    if not results:\n",
    "        print(\"❌ 没有搜索结果\")\n",
    "        return\n",
    "    \n",
    "    hits = results.get('hits', {})\n",
    "    total = hits.get('total', {}).get('value', 0)\n",
    "    \n",
    "    print(f\"\\n🔍 搜索词: '{query}'\")\n",
    "    print(f\"📊 找到 {total} 个相关文档\")\n",
    "    print(\"-\" * 60)\n",
    "    \n",
    "    for i, hit in enumerate(hits.get('hits', []), 1):\n",
    "        source = hit['_source']\n",
    "        score = hit['_score']\n",
    "        highlight = hit.get('highlight', {})\n",
    "        \n",
    "        print(f\"\\n📄 文档 {i} (相关度: {score:.2f})\")\n",
    "        print(f\"标题: {source['title']}\")\n",
    "        print(f\"作者: {source['author']}\")\n",
    "        print(f\"内容: {source['content'][:100]}...\")\n",
    "        \n",
    "        # 显示高亮\n",
    "        if highlight:\n",
    "            print(\"🔆 高亮匹配:\")\n",
    "            for field, highlights in highlight.items():\n",
    "                for highlight_text in highlights:\n",
    "                    print(f\"  {field}: {highlight_text}\")\n",
    "\n",
    "# 进行多个搜索演示\n",
    "print(\"\\n\" + \"=\" * 60)\n",
    "print(\"IK中文分词搜索演示\")\n",
    "print(\"=\" * 60)\n",
    "\n",
    "search_terms = [\n",
    "    \"人工智能\",\n",
    "    \"机器学习算法\",\n",
    "    \"自然语言\",\n",
    "    \"深度学习\",\n",
    "    \"智能机器\",\n",
    "    \"计算机科学\"\n",
    "]\n",
    "\n",
    "for term in search_terms:\n",
    "    results = search_chinese_articles(term)\n",
    "    display_search_results(term, results)\n",
    "    print(\"\\n\" + \"=\"*60)\n",
    "\n",
    "print(\"\\n🎉 IK中文分词器演示完成!\")\n",
    "print(\"✨ 特点总结:\")\n",
    "print(\"• ik_smart: 智能分词，适合搜索场景\")\n",
    "print(\"• ik_max_word: 最大化分词，适合索引场景\")\n",
    "print(\"• 支持中文词汇的语义理解\")\n",
    "print(\"• 可以识别专业术语和复合词\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "15147075-7f3c-4ccf-9644-9269e7b8e475",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
